import apiClient from './interceptor';

// 工作经历接口
export interface WorkExperience {
  company: string;      // 学校部门
  position: string;     // 职位
  period: string;       // 工作时间
  description: string;  // 工作描述
}

// 员工履历请求参数接口
export interface EmployeeHistoryParams {
  employeeId: string;
  workExperiences: WorkExperience[] | null;
}

// 添加员工履历记录的请求参数接口
export interface AddEmployeeHistoryParams extends EmployeeHistoryParams {
  row: number;  // 插入到第几条记录前面
}

// 导入员工履历
export const importEmployeeHistory = async (params: EmployeeHistoryParams) => {
  try {
    const response = await apiClient.post('/user/employeeHistory', params);

    // 打印请求参数和响应数据，用于调试
    console.log('导入员工履历请求参数:', {
      url: '/user/employeeHistory',
      method: 'POST',
      data: params
    });
    console.log('导入员工履历响应:', response);

    return response.data;
  } catch (error) {
    console.error('导入员工履历失败:', error);
    throw error;
  }
};

// 示例数据
export const sampleWorkExperience: WorkExperience = {
  company: "计算机科学与技术学院",
  position: "副教授",
  period: "2020-01 至今",
  description: "主要负责本科生计算机基础课程教学工作，同时承担研究生数据库系统课程。参与多项省级教学改革项目，发表教学研究论文多篇。"
};

// 工作经历时间段格式化函数
export const formatWorkPeriod = (startDate: string, endDate?: string): string => {
  const start = startDate.substring(0, 7); // 获取 YYYY-MM 格式
  const end = endDate ? endDate.substring(0, 7) : '至今';
  return `${start} ~ ${end}`;
};

// 工作描述格式化函数（如果描述过长，可以截断）
export const formatWorkDescription = (description: string, maxLength: number = 200): string => {
  if (description.length <= maxLength) return description;
  return `${description.substring(0, maxLength)}...`;
};

// 导出员工履历
export const exportEmployeeHistory = async (employeeId: string) => {
  try {
    const response = await apiClient.get(`/user/employeeHistory/${employeeId}`, {
      responseType: 'blob' // 设置响应类型为二进制流
    });

    // 打印请求信息，用于调试
    console.log('导出员工履历请求参数:', {
      url: `/user/employeeHistory/${employeeId}`,
      method: 'GET'
    });

    // 创建 Blob 对象
    const blob = new Blob([response.data], { type: 'application/octet-stream' });
    
    // 创建下载链接
    const downloadUrl = window.URL.createObjectURL(blob);
    
    // 创建一个临时的 a 标签用于下载
    const link = document.createElement('a');
    link.href = downloadUrl;
    link.download = `员工履历_${employeeId}_${new Date().getTime()}.xlsx`; // 可以根据实际格式修改后缀名
    
    // 触发下载
    document.body.appendChild(link);
    link.click();
    
    // 清理
    document.body.removeChild(link);
    window.URL.revokeObjectURL(downloadUrl);

    return response.data;
  } catch (error) {
    console.error('导出员工履历失败:', error);
    throw error;
  }
};

// 使用示例：
/*
try {
  await exportEmployeeHistory('0000000');
  message.success('员工履历导出成功');
} catch (error) {
  message.error('员工履历导出失败');
}
*/

// 在员工履历中添加记录
export const addEmployeeHistory = async (params: AddEmployeeHistoryParams) => {
  try {
    const response = await apiClient.patch('/user/employeeHistory/add', params);

    // 打印请求参数和响应数据，用于调试
    console.log('添加员工履历记录请求参数:', {
      url: '/user/employeeHistory/add',
      method: 'PATCH',
      data: params
    });
    console.log('添加员工履历记录响应:', response);

    return response.data;
  } catch (error) {
    console.error('添加员工履历记录失败:', error);
    throw error;
  }
};

// 使用示例：
/*
const newHistoryRecord = {
  employeeId: "0000000",
  workExperiences: [
    {
      company: "计算机科学与技术学院",
      position: "讲师",
      period: "2018-09 至 2020-01",
      description: "负责本科生Java程序设计课程教学工作。"
    }
  ],
  row: 2  // 插入到第2条记录前面
};

try {
  const response = await addEmployeeHistory(newHistoryRecord);
  if (response.code === 1) {
    message.success('员工履历记录添加成功');
  } else {
    message.error(response.msg || '添加失败');
  }
} catch (error) {
  message.error('添加员工履历记录失败');
}
*/
